home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_b / set.asm < prev    next >
Assembly Source File  |  1995-04-22  |  4KB  |  139 lines

  1.  
  2. 00010 ;SAVE"D:SET.SYN 
  3. 00020 ;        .LI OFF 
  4. 00030 ; This program switches the 
  5. 00040 ; density for one PERCOM 
  6. 00050 ; compatible drive.  The 
  7. 00060 ; allowed settings are: 
  8. 00070 ; S=single, D=double, E=1050. 
  9. 00080 ; Command format is: 
  10. 00090 ; SET 1D 
  11. 00091 ; 
  12. 00092 ; NOTE: The 1050 format allows 
  13. 00093 ; you to read or write 1050 
  14. 00094 ; density disks, but does 
  15. 00095 ; not allow you to format disks 
  16. 00096 ; in that density. 
  17. 00100 ; 
  18. 00110 ****************************** 
  19. 00120 *  Daniel L. Moore 03/19/84  * 
  20. 00130 ****************************** 
  21. 00140 ; 
  22. 00150 DOSVEC   .EQ $A 
  23. 00160 DOSINIT  .EQ $7E0   FMS v. 2 
  24. 00170 DENSITY  .EQ $D4 FP register 0 
  25. 00180 ; 
  26. 00190 ; OS/A+ equates 
  27. 00200 CPBUFP   .EQ $A   next char. 
  28. 00210 CPCMDB   .EQ $3F  command buff. 
  29. 00220 ; SIO equates 
  30. 00230 DDEVIC   .EQ $300 
  31. 00240 DUNIT    .EQ $301 
  32. 00250 DCOMND   .EQ $302 
  33. 00260 DSTATS   .EQ $303 
  34. 00270 DBUFLO   .EQ $304 
  35. 00280 DBYTLO   .EQ $308 
  36. 00290 ; Data direction control 
  37. 00300 IN       .EQ $40 
  38. 00310 OUT      .EQ $80 
  39. 00320 ; PERCOM drive table 
  40. 00330 READ     .EQ $4E 
  41. 00340 WRITE    .EQ $4F 
  42. 00350 LENGTH   .EQ 12 
  43. 00360 FM       .EQ 0  FM recording 
  44. 00370 MFM      .EQ 4  MFM recording 
  45. 00380 ; 
  46. 00390 SIO      .EQ $E459 
  47. 00400 ; 
  48. 00410          .OR $4000 
  49. 00420 ; 
  50. 00430 START    CLC 
  51. 00440          LDY #CPBUFP 
  52. 00450          LDA (DOSVEC),Y 
  53. 00460          ADC #CPCMDB+1 
  54. 00470          TAY 
  55. 00480          LDA (DOSVEC),Y drive # 
  56. 00490 ; Test for drive 1 to 8. 
  57. 00500          CMP #'1 
  58. 00510          BCC DOS 
  59. 00520          CMP #'9 
  60. 00530          BCS DOS 
  61. 00540          CLC 
  62. 00550          SBC #'0-1 
  63. 00560          STA DUNIT 
  64. 00570          LDA #$31 
  65. 00580          STA DDEVIC 
  66. 00590 ; Test for S(0), D(1), E(2) 
  67. 00600          LDX #0 
  68. 00610          INY 
  69. 00620          LDA (DOSVEC),Y 
  70. 00630          CMP #'S 
  71. 00640          BEQ SETIT 
  72. 00650          INX 
  73. 00660          CMP #'D 
  74. 00670          BEQ SETIT 
  75. 00680          INX 
  76. 00690          CMP #'E 
  77. 00700          BEQ SETIT 
  78. 00710 DOS      RTS 
  79. 00720 ; 
  80. 00730 SETIT    STX DENSITY 
  81. 00740 ; First read in the current 
  82. 00750 ; control table. 
  83. 00760          LDA #IN 
  84. 00770          STA DSTATS 
  85. 00780          LDA #READ 
  86. 00790          STA DCOMND 
  87. 00800          LDA #LENGTH 
  88. 00810          STA DBYTLO 
  89. 00820          LDA #0 
  90. 00830          STA DBYTLO+1 
  91. 00840          LDA #TABLE 
  92. 00850          STA DBUFLO 
  93. 00860          LDA /TABLE 
  94. 00870          STA DBUFLO+1 
  95. 00880          JSR SIO 
  96. 00890          BMI DOS  exit if error 
  97. 00900 ; Then modify the control bytes 
  98. 00910 ; First recording technique 
  99. 00920          LDA DENSITY 
  100. 00930          BNE SET.MFM 
  101. 00940          LDX #FM 
  102. 00950          BEQ SET 
  103. 00960 SET.MFM  LDX #MFM 
  104. 00970 SET      STX TABLE+5 
  105. 00980 ; Then set the sector length 
  106. 00990          CMP #1 
  107. 01000          BEQ S.256 
  108. 01010          LDX #$80     128 bytes 
  109. 01020          LDY #$00 
  110. 01030          BEQ SETLEN 
  111. 01040 S.256    LDX #$00     256 bytes 
  112. 01050          LDY #$01 
  113. 01060 SETLEN   STY TABLE+6  High byte 
  114. 01070          STX TABLE+7  Low byte 
  115. 01080 ; Then set the number of 
  116. 01090 ; sectors per track. 
  117. 01100          CMP #2 
  118. 01110          BEQ S.26 
  119. 01120          LDX #18     18 sectors 
  120. 01130          BNE SETSECT 
  121. 01140 S.26     LDX #26     26 sectors 
  122. 01150 SETSECT  STX TABLE+3 
  123. 01160 ; Then write the table out. 
  124. 01170          LDA #OUT 
  125. 01180          STA DSTATS 
  126. 01190          LDA #WRITE 
  127. 01200          STA DCOMND 
  128. 01210          JSR SIO 
  129. 01220 ; Init DOS for the current 
  130. 01230 ; density. 
  131. 01240          JSR DOSINIT 
  132. 01250 ; Then return to DOS. 
  133. 01260          RTS 
  134. 01270 ; 
  135. 01280 ; DRIVE table. 
  136. 01290 TABLE    .EQ * 
  137. 01300 ; 
  138. 01310 END      .LI ON 
  139.